/**
 * @description UserModel Service
 */

const { UserModel } = require("../db/index");
const Op = require("sequelize").Op;

/**
 * 新用户注册
 * @param {string} userid 用户id
 * @param {string} nikename 昵称
 * @param {string} city 城市
 * @param {number} isVip 是否VIP
 * @param {string} createtime 注册时间
 */
async function createUser(params) {
  const result = await UserModel.create(params);
  const data = result.dataValues;
  return data;
}

/**
 *
 * @param {string} username 用户名
 */
async function getUserInfo(params) {
  let whereOption = {}
  if (params.username) {
    whereOption.username = params.username
  }
  if (params.phone) {
    whereOption.phone = params.phone
  }
  const result = await UserModel.findOne({
    where: whereOption,
  });
  console.log("result", result);
  if (result === null) {
    return result;
  }
  return result.dataValues;
}

/**
 * 修改用户信息
 * @param {*} param0 要修改的用户信息
 * @param {*} param1 查询条件
 */
async function updateUser({ nikename, city, isVip }, { userid }) {
  // 拼接修改内容
  const updateObj = {};
  if (nikename) {
    updateObj.nikename = nikename;
  }
  if (city) {
    updateObj.city = city;
  }
  if (isVip) {
    updateObj.isVip = isVip;
  }

  // 拼接查询条件
  const whereOption = {};
  if (userid) {
    whereOption.userid = userid;
  }

  // 执行修改
  const result = await UserModel.update(updateObj, {
    where: whereOption,
  });
  return result[0] > 0;
}

/**
 * 删除用户
 * @param {string} userid 用户id
 */
async function deleteUser(userid) {
  const result = await UserModel.destroy({
    where: {
      userid,
    },
  });
  return result > 0;
}

/**
 * 分页查询所有用户
 * @param {number} page 当前页码
 * @param {number} pageSize 每页条数
 */
async function queryAll({ page = 1, pageSize = 10, id }) {
  const whereOption = {};
  if (page < 1) {
    page = 1;
  }
  if (id) {
    whereOption.id = id;
  }
  const result = await UserModel.findAll({
    limit: pageSize,
    offset: (page - 1) * pageSize,
    where: whereOption,
  });
  const total = await UserModel.findAll();
  return {
    page,
    pageSize,
    count: total.length,
    data: result.map((user) => user.dataValues),
  };
}
async function checkUser(params) {
  const whereOption = {
    username: params.username,
    password: params.password
  };
  const result = await UserModel.findAll({
    where: whereOption,
  });
  return {
    data: result
  };
}
async function updateData(params, id) {
  // 拼接修改内容
  const updateObj = params;

  // 拼接查询条件
  const whereOption = {};
  if (id) {
    whereOption.id = id;
  }

  // 执行修改
  const result = await UserModel.update(updateObj, {
    where: whereOption,
  });
  return result[0] > 0;
}
async function updatePwdFun(params) {
  const result = await UserModel.findAll({
    where: {
      phone: params.phone
    }
  });
  if (result.length) {
    let id = result[0].id
    const rs = await UserModel.update({
      password: params.password
    }, {
      where: {
        id
      },
    });
    return result
  } else {
    return false
  }
  // 拼接修改内容
  // const updateObj = params;

  // // 拼接查询条件
  // const whereOption = {};
  // if (id) {
  //   whereOption.id = id;
  // }

  // // 执行修改
  // const result = await UserModel.update(updateObj, {
  //   where: whereOption,
  // });
  // return result[0] > 0;
}

module.exports = {
  createUser,
  getUserInfo,
  updateUser,
  deleteUser,
  queryAll,
  updateData,
  checkUser,
  updatePwdFun
};
